wiki.js 安装与配置

1 操作系统准备

systemctl stop firewalld;
systemctl disable  firewalld;
yum install wget

2 下载程序

su - root
useradd wikijs
chown wikijs:wikijs -R /opt
su -  wikijs
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

3 配置程序

su -  wikijs
cd  /opt
mkdir wiki 
tar xzf wiki-js.tar.gz -C ./wiki 
cd ./wiki

4 配置文件

mv config.sample.yml config.yml

4.1 docker 配置

port: 3000                                                                                                                                           
bindIP: 0.0.0.0                                                                                                                                      
db:                                                                                                                                                  
  type: $(DB_TYPE)                                                                                                                                   
  host: '$(DB_HOST)'                                                                                                                                 
  port: $(DB_PORT)                                                                                                                                   
  user: '$(DB_USER)'                                                                                                                                 
  pass: '$(DB_PASS)'                                                                                                                                 
  db: $(DB_NAME)                                                                                                                                     
  storage: $(DB_FILEPATH)                                                                                                                            
  ssl: $(DB_SSL)                                                                                                                                     
ssl:                                                                                                                                                 
  enabled: $(SSL_ACTIVE)                                                                                                                             
  port: 3443                                                                                                                                         
  provider: letsencrypt                                                                                                                              
  domain: $(LETSENCRYPT_DOMAIN)                                                                                                                      
  subscriberEmail: $(LETSENCRYPT_EMAIL)                                                                                                              
logLevel: $(LOG_LEVEL:info)                                                                                                                          
logFormat: $(LOG_FORMAT:default)                                                                                                                     
ha: $(HA_ACTIVE)                                                                                                                                     
~             

4.2 linux 配置

db:
  type: postgres

  # PostgreSQL / MySQL / MariaDB / MS SQL Server only:
  host: 192.168.10.114
  port: 6432
  user: wikijs
  pass: wikijs
  db: wiki
  ssl: false
  # Optional - PostgreSQL only:
  schema: public


#######################################################################
# ADVANCED OPTIONS                                                    #
#######################################################################
# Do not change unless you know what you are doing!

# ---------------------------------------------------------------------
# SSL/TLS Settings
# ---------------------------------------------------------------------
# Consider using a reverse proxy (e.g. nginx) if you require more
# advanced options than those provided below.

ssl:
  enabled: true
  port: 3443

  # Provider to use, possible values: custom, letsencrypt
  provider: custom

  # ++++++ For custom only ++++++
  # Certificate format, either 'pem' or 'pfx':
  format: pem
  # Using PEM format:
  key: /opt/cert/privkey.pem
  cert: /opt/cert/cert.pem
  passphrase: null
  dhparam: null


# ---------------------------------------------------------------------
# IP address the server should listen to
# ---------------------------------------------------------------------
# Leave 0.0.0.0 for all interfaces

bindIP: 0.0.0.0

# ---------------------------------------------------------------------
# Log Level
# ---------------------------------------------------------------------
# Possible values: error, warn, info (default), verbose, debug, silly

logLevel: info

# ---------------------------------------------------------------------
# Log Format
# ---------------------------------------------------------------------
# Output format for logging, possible values: default, json

logFormat: default

# ---------------------------------------------------------------------
# Offline Mode
# ---------------------------------------------------------------------
# If your server cannot access the internet. Set to true and manually
# download the offline files for sideloading.

offline: false

# ---------------------------------------------------------------------
# High-Availability
# ---------------------------------------------------------------------
# Set to true if you have multiple concurrent instances running off the
# same DB (e.g. Kubernetes pods / load balanced instances). Leave false
# otherwise. You MUST be using PostgreSQL to use this feature.

ha: false

# ---------------------------------------------------------------------
# Data Path
# ---------------------------------------------------------------------
# Writeable data path used for cache and temporary user uploads.
dataPath: ./data

# ---------------------------------------------------------------------
# Body Parser Limit
# ---------------------------------------------------------------------
# Maximum size of API requests body that can be parsed. Does not affect
# file uploads.

bodyParserLimit: 5mb

Warning

如果需要配置SSL ,请在
SSL 配置私钥和公钥的位置,即可。

4.3 linux 配置

5 安装node.js

1 下载地址

Note

由于网络的关系无法使用 Package Manager 的方式安装,请自行下载最新的 node.js 并配置对应环境变量。

Node.js — Download Node.js® (nodejs.org)

2 先决条件

  1. 首先确定哪些应用需要使用 node.js .
  2. 创建对应的应用账户 APP
#root>
useradd app 
  1. 更改 node.js 的安装目录权限。
#root>
chown app:app /opt 
  1. 使用应用程序的OS 账户进行 node.js 安装。
#root>
su - app
Note

如果设置其他应用账户名称,请将 app 用户更改为实际值 。

3 node.js 安装

3.1 下载软件

#app>
cd /opt
wget https://nodejs.org/dist/v20.15.0/node-v20.15.0-linux-x64.tar.xz
tar -xf node*.tar.xz
ln -s  node-v*-linux-x64 node

3.2 设置环境变量

#app>
cat >> ~/.bash_profile << EOF
export NODE_HOME=/opt/node
export PATH=\$PATH:/opt/node/bin
EOF
source ~/.bash_profile

6 启动服务

node server

6.1 配置Linux 服务管理启动项

[root@node1 ~]# vi /etc/systemd/system/wiki.service 
[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/opt/node/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=wikijs
Environment=NODE_ENV=production
WorkingDirectory=/opt/wiki

[Install]
WantedBy=multi-user.target

6.2 重新加载Linux 服务管理器

systemctl daemon-reload

6.3 启动wiki.js

systemctl start wiki

6.4 开机自启动

systemctl enable wiki

7 FAQ

7.1 nodejs 版本太高,无法进行启动

error: Package subpath './public/extractFiles' is not defined by "exports" in /opt/wiki/node_modules/extract-files/package.json
Note

请降级到node16 LCST 长期支持版

7.2 网络端口被占用

Warning

如果端口被占用,或者无权限,请关闭selinux。